Go绑定自定义域名 您所在的位置:网站首页 dns cname a记录 Go绑定自定义域名

Go绑定自定义域名

2023-04-25 02:05| 来源: 网络整理| 查看: 265

文件(Object)上传至存储空间(Bucket)后,OSS会自动生成文件URL,您可以直接通过文件URL(即Bucket外网访问域名)访问该文件。如果您希望通过自定义域名访问这些Object,需要添加CNAME记录将自定义域名绑定至Object所在的Bucket。

注意事项本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见Go初始化。创建CnameToken

以下代码用于创建CnameToken。

package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" // 填写自定义域名。 cname := "www.example.com" cbResult,err := client.CreateBucketCnameToken(bucketName,cname) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Printf("Cname: %s\n",cbResult.Cname) fmt.Printf("Token: %s\n",cbResult.Token) fmt.Printf("ExpireTime: %s\n",cbResult.ExpireTime) }获取CnameToken

以下代码用于获取CnameToken。

package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" // 填写自定义域名。 cname := "www.example.com" // 获取CnameToken。 cbResult,err := client.GetBucketCnameToken(bucketName,cname) if err != nil { HandleError(err) } // 打印绑定的Cname名称。 fmt.Printf("Cname: %s\n",cbResult.Cname) // 打印OSS返回的CnameToken。 fmt.Printf("Token: %s\n",cbResult.Token) // 打印CnameToken的过期时间。 fmt.Printf("ExpireTime: %s\n",cbResult.ExpireTime) }添加CNAME记录绑定自定义域名package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" // 填写自定义域名。 cname := "www.example.com" err = client.PutBucketCname(bucketName, cname) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Printf("Put Bucket Cname Success!") }绑定自定义域名和证书package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" var putCnameConfig oss.PutBucketCname var CertificateConfig oss.CertificateConfiguration // 填写自定义域名。 putCnameConfig.Cname = "www.example.com" // 填写证书公钥。 certificate := "-----BEGIN CERTIFICATE-----MIIGeDCCBOCgAwIBAgIRAPj4FWpW5XN6kwgU7*******-----END CERTIFICATE-----" // 填写证书私钥。 privateKey := "-----BEGIN CERTIFICATE-----MIIFBzCCA++gT2H2hT6Wb3nwxjpLIfXmSVcV*****-----END CERTIFICATE-----" // 填写证书ID。 CertificateConfig.CertId = "92******-cn-hangzhou" CertificateConfig.Certificate = certificate CertificateConfig.PrivateKey = privateKey CertificateConfig.Force = true putCnameConfig.CertificateConfiguration = &CertificateConfig err = client.PutBucketCnameWithCertificate(bucketName,putCnameConfig) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Printf("Bind Certificate Success!") }解除证书

如果您不希望该域名继续使用该证书,可以执行解绑证书的操作。

package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" var putCnameConfig oss.PutBucketCname var CertificateConfig oss.CertificateConfiguration // 填写自定义域名。 putCnameConfig.Cname = "www.example.com" // 删除证书。 CertificateConfig.DeleteCertificate = true putCnameConfig.CertificateConfiguration = &CertificateConfig err = client.PutBucketCnameWithCertificate(bucketName,putCnameConfig) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Printf("Unbind Certificate Success!") }查看CNAME记录

以下代码用于查看CNAME记录。

package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" // 查看CNAME记录。 cnResult,err := client.ListBucketCname(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } var certificate oss.Certificate fmt.Printf("Bucket:%s\n", cnResult.Bucket) fmt.Printf("Owner:%s\n", cnResult.Owner) if len(cnResult.Cname) > 0 { for _, cname := range cnResult.Cname { // 打印自定义域名。 fmt.Printf("Domain:%s\n", cname.Domain) // 打印绑定自定义域名的时间。 fmt.Printf("LastModified:%s\n", cname.LastModified) // 打印域名所处状态。 fmt.Printf("Status:%s\n", cname.Status) if cnameInfo.Certificate != certificate { // 打印证书来源。 fmt.Printf("Type:%s\n", cnameInfo.Certificate.Type) // 打印证书ID。 fmt.Printf("CertId:%s\n", cnameInfo.Certificate.CertId) // 打印证书状态。 fmt.Printf("Status:%s\n", cnameInfo.Certificate.Status) // 打印证书绑定时间。 fmt.Printf("CreationDate:%s\n", cnameInfo.Certificate.CreationDate) // 打印证书签名。 fmt.Printf("Fingerprint:%s\n", cnameInfo.Certificate.Fingerprint) // 打印证书有效期起始时间。 fmt.Printf("ValidStartDate:%s\n", cnameInfo.Certificate.ValidStartDate) // 打印证书有效期终止时间。 fmt.Printf("ValidEndDate:%s\n", cnameInfo.Certificate.ValidEndDate) } } } }删除CNAME记录

以下代码用于删除CNAME记录。

package main import ( "fmt" "github.com/aliyun/aliyun-oss-go-sdk/oss" "os" ) func main() { // 创建OSSClient实例。 // yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。 // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 填写Bucket名称,例如examplebucket。 bucketName := "examplebucket" // 填写自定义域名。 cname := "www.example.com" // 删除CNAME记录。 err = client.DeleteBucketCname(bucketName,cname) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println("Delete Bucket Cname Success!") }相关文档关于创建域名所有权验证所需的CnameToken的API接口说明,请参见CreateCnameToken。关于获取CnameToken的API接口说明,请参见GetCnameToken。关于添加CNAME记录的API接口说明,请参见PutCname。关于查看CNAME记录的API接口说明,请参见ListCname。关于删除CNAME记录的API接口说明,请参见DeleteCname。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有